package com.pms.controller;

import com.pms.common.PageBean;
import com.pms.pojo.SysPost;
import com.pms.result.Result;
import com.pms.service.SysPostService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/sysPosts")
@Slf4j
public class SysPostController {

    @Autowired
    private SysPostService sysPostService;

    /**
     * 添加岗位
     *
     * @param sysPost
     * @return
     */
    @PostMapping
    public Result addSysPost(@RequestBody SysPost sysPost) {
        log.info("添加岗位: {}", sysPost);
        sysPostService.addSysPost(sysPost);
        return Result.success();
    }

    /**
     * 删除岗位
     *
     * @param id
     */
    @DeleteMapping("/{id}")
    public Result deleteSysPost(@PathVariable Integer id) {
        log.info("删除岗位: {}", id);
        sysPostService.deleteSysPost(id);
        return Result.success();
    }

    /**
     * 更新岗位
     *
     * @param sysPost
     * @return
     */
    @PutMapping
    public Result updateSysPost(@RequestBody SysPost sysPost) {
        log.info("更新岗位：{}", sysPost);
        sysPostService.updateSysPost(sysPost);
        return Result.success();
    }

    /**
     * 根据id查询岗位
     *
     * @param id
     * @return
     */
    @GetMapping("/{id}")
    public Result<SysPost> getSysPostById(@PathVariable Integer id) {
        log.info("根据id查询岗位：{}", id);
        SysPost sysPost = sysPostService.getSysPostById(id);
        return Result.success(sysPost);
    }

    /**
     * 分页查询岗位
     *
     * @param pageNum 当前页码
     * @param pageSize 每页显示条数
     * @param postName 岗位名称（可选）
     * @param postCode 岗位编码（可选）
     * @return
     */
    @GetMapping
    public Result<PageBean<SysPost>> getAllSysPosts(
            @RequestParam(defaultValue = "1") Integer pageNum,  // 使用 pageNum
            @RequestParam(defaultValue = "10") Integer pageSize,
            @RequestParam(required = false) String postName,
            @RequestParam(required = false) String postCode) {
        log.info("分页查询岗位 - 页码：{}, 每页显示：{}, 岗位名称：{}, 岗位编码：{}",
                pageNum, pageSize, postName, postCode);

        PageBean<SysPost> pageBean = sysPostService.getAllSysPosts(pageNum, pageSize, postName, postCode);
        return Result.success(pageBean);
    }
}